/**
 * 
 */
package com.shifan.phone.action;

import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.shifan.phone.common.Message;
import com.shifan.phone.common.Page;
import com.shifan.phone.common.Tools;
import com.shifan.phone.model.UserModel;
import com.shifan.phone.service.UserModelService;

/**
 * 用户表Action
 * @author TangLei
 * @date 2018年12月4日 上午11:01:10
 * @version 1.0
 */
@Controller
@RequestMapping("/user")
public class UserModelAction {
	
	//注入用户表Service接口
	@Resource
	UserModelService userModelService;
	
	/**
	 * 登录
	 * @param user 用户对象
	 * @param session
	 * @return Message对象
	 */
	@RequestMapping("/isLogin")
	@ResponseBody
	public Message isLogin(UserModel user,HttpSession session){
		//实力化Message对象
		Message mes = new Message();
		//调用用户表Service接口里面的isLogin的方法
		UserModel users = userModelService.isLogin(user);
		//判断users对象是否为空
		if(!Tools.isEmpty(users)){
			//判断
			if(Tools.isEmpty(user.getUsersType())){
				session.setAttribute("login", users);
			}else {
				session.setAttribute("logins", users);
			}
			//给Message对象的状态和信息赋值
			mes.setState(Tools.STATE_YES);
			mes.setMsg("登录成功!");
		}else{
			//给Message对象的状态和信息赋值
			mes.setState(Tools.STATE_NO);
			mes.setMsg("登录失败!");
		}
		return mes;
	}
	
	/**
	 * 得到前台登录用户信息
	 * @param session
	 * @return 用户对象
	 */
	@RequestMapping("/getUser")
	@ResponseBody
	public UserModel getUser(HttpSession session){
		//得到登录的用户信息
		UserModel user = (UserModel) session.getAttribute("login");
		//返回
		return user;
	}
	
	/**
	 * 得到后台登录用户信息
	 * @param session
	 * @return 用户对象
	 */
	@RequestMapping("/getUserTwo")
	@ResponseBody
	public UserModel getUserTwo(HttpSession session){
		//得到登录的用户信息
		UserModel user = (UserModel) session.getAttribute("logins");
		//返回
		return user;
	}
	
	/**
	 * 退出登录
	 * @param session
	 * @param action
	 */
	@RequestMapping("/exit")
	@ResponseBody
	public String exit(HttpSession session,String action){
		//判断 action=qiantai 或 action=houtai
		if("qiantai".equals(action)){
			session.removeAttribute("login");
		}else if("houtai".equals(action)){
			session.removeAttribute("logins");
		}
		return "";
	}
	
	/**
	 * 根据用户类型查询用户所有信息
	 * @param user 用户对象
	 * @param page 分页对象
	 * @return map集合
	 */
	@RequestMapping("/findByUsersTypeAll")
	@ResponseBody
	public Map<String,Object> findByUsersTypeAll(UserModel user,Page page){
		//给用户对象赋值分页对象
		user.setPages(page);
		//调用用户Service接口里面的根据用户类型查询用户信息的方法
		return userModelService.findByUsersTypeAll(user);
	}
	
	/**
	 * 根据用户ID查询用户信息的方法
	 * @param usersId 用户ID
	 * @return 用户对象
	 */
	@RequestMapping("/findById")
	@ResponseBody
	public UserModel findById(String usersId){
		//调用用户Service接口里面的根据用户Id查询用户信息的方法
		return userModelService.selectByPrimaryKey(usersId);
	}
	
	/**
	 * 增加或修改用户信息
	 * @param user 用户对象
	 * @return 信息对象
	 */
	@RequestMapping("/saveOrUpdate")
	@ResponseBody
	public Message save(UserModel user,HttpSession session){
		//创建一个Message对象
		Message mes = new Message();
		//定义一个变量
		int rows = 0;
		//判断用户ID是否为空
		if(Tools.isEmpty(user.getUsersId())){
			//调用用户Service接口里面的增加的方法，得到一个影响的行数
			rows = userModelService.insertSelective(user);
		}else {
			//调用用户Service接口里面的修改的方法，得到一个影响的行数
			rows = userModelService.updateByPrimaryKeySelective(user);
			//根据Id查询用户对象
			UserModel userModel = userModelService.selectByPrimaryKey(user.getUsersId());
			
			//得到session的login
			UserModel userModels = (UserModel) session.getAttribute("login");
			//判断userModels是否为空
			if(!Tools.isEmpty(userModels)){
				session.removeAttribute("login");
				session.setAttribute("login", userModel);
			}
		}
		
		//判断
		if(rows > 0){
			//给message对象赋值
			mes.setState(Tools.STATE_YES);
			mes.setMsg("操作成功!");
		}else {
			//给message对象赋值
			mes.setState(Tools.STATE_NO);
			mes.setMsg("操作失败!");
		}
		//返回mes
		return mes;
	}
	
	/**
	 * 根据用户ID删除用户信息
	 * @param usersId 用户ID
	 * @return 信息对象
	 */
	@RequestMapping("/deletes")
	@ResponseBody
	public Message deletes(String usersId){
		//创建一个Message对象
		Message mes = new Message();
		//调用用户Service接口里面的删除的方法，并得到一个影响的行数
		int rows = userModelService.deleteByPrimaryKey(usersId);
		//判断
		if(rows > 0){
			//给message对象赋值
			mes.setState(Tools.STATE_YES);
			mes.setMsg("删除成功!");
		}else {
			//给message对象赋值
			mes.setState(Tools.STATE_NO);
			mes.setMsg("删除失败!");
		}
		//返回message对象
		return mes;
	}
}
